Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

213
Vistas
flatMap, flat, flatten no existe en tipo any[]

Estoy usando Chrome 70 y Chrome agrega métodos .flatMap , .flatten , .flat . Entonces mi código se ejecuta como se esperaba. Desafortunadamente, a TypeScript no le gusta.

 // data.flatMap lint error export const transformData = (data: any[]) => data.flatMap(abc => [ parentObj(abc), ...generateTasks(abc) ]);

La advertencia que recibí es TS2339: Property 'flatMap' does not exist on type 'any[]'.

Estoy usando Angular 6, que usa Typescript ~2.9.2, y ya import 'core-js/es7/array'; en polyfills.ts .

Supongo que no hay escritura para estos métodos, y traté de npm run -dev @types/array.prototype.flatmap pero aún no lo resolví.

over 4 years ago · Santiago Trujillo
7 Respuestas
Responde la pregunta

0

Intenté la mayoría de las respuestas y no me funcionaron. IDE: código VS

pero esto hizo

 npm i -D @types/node
over 4 years ago · Santiago Trujillo Denunciar

0

También puede agregar esnext a su --lib en lugar de 'es2019'

 "compilerOptions": { "target": "es2015", "lib": ["dom", "esnext"] }

Funcionó para mí.

over 4 years ago · Santiago Trujillo Denunciar

0

A partir de angular 11 y gracias a TypeScript 3.9 , esta es ahora la nueva configuración.

 "compilerOptions": { "target": "es2018", "module": "es2020", "lib": ["es2020", "dom"], }

¿Por qué es2020 en lugar de esnext ?

En TypeScript 3.9, el comportamiento del compilador de TypeScript controlado por el módulo es el mismo con los valores "esnext" y "es2020". Este comportamiento puede cambiar en el futuro, porque la opción "esnext" podría evolucionar de formas incompatibles con versiones anteriores, lo que daría lugar a errores en tiempo de compilación o tiempo de ejecución durante una actualización de TypeScript. Como resultado, el código puede volverse inestable. El uso de la opción "es2020" mitiga este riesgo.

para leer más

over 4 years ago · Santiago Trujillo Denunciar

0

Puede ampliar la interfaz de matriz global mientras espera la estabilidad, momento en el que se agregará a la biblioteca predeterminada.

 interface Array<T> { flat(): Array<T>; flatMap(func: (x: T) => T): Array<T>; }
over 4 years ago · Santiago Trujillo Denunciar

0

Debe agregar es2019 o es2019.array a su configuración --lib para que TypeScript reconozca array.flat() y flatMap() .

Ejemplo:

 { "compilerOptions": { "target": "es5", "lib": [ "es2019" ] } }

Anteriormente, esto estaba disponible como parte de esnext o esnext.array , pero ahora es oficialmente parte de ES2019.

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de Aaron Beall es excelente. Puede valer la pena saber que si no se especifica "lib" en el archivo tsConfig.JSON, se inyecta una lista predeterminada de bibliotecas. Las bibliotecas predeterminadas inyectadas son: ► Para --target ES5: DOM,ES5,ScriptHost ► Para --target ES6: DOM,ES6,DOM.Iterable,ScriptHost

En otras palabras: debemos especificar aquellas librerías que se agregaron previamente de forma automática. (consulte: https://www.typescriptlang.org/docs/handbook/compiler-options.html para obtener más información)

 "compilerOptions": { "target": "es6", "lib": [ "es2019", "DOM", "ES6" ,"DOM.Iterable", "ScriptHost"],}
over 4 years ago · Santiago Trujillo Denunciar

0

Si está en una versión anterior a es2019, puede implementar un shim para proporcionar una funcionalidad similar a .flat() y .flatMap() proporcionada por bibliotecas posteriores.

A matriz plana de un solo nivel

 arr.reduce((acc, val) => acc.concat(val), []);

A una matriz multinivel plana

 function flatDeep(arr, d = 1) { return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), []) : arr.slice(); };

para saber más profundamente, también puede consultar el siguiente enlace

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda